package com.lz.demo.log.slf4j;

import com.lz.demo.log.slf4j.subpackage.SubPackageTest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.InputStream;
import java.util.logging.LogManager;

/**
 * slf4j 日志级别从高到低：error、warn、info、debug、trace，另外，还有 off 和 all 表示关闭和记录所有日志
 * 在使用 jul 作为实际输出时，要注意 logging.properties 中配置的    级别，是没用的，
 */
public class Slf4jJulImplTest {

    // 注意：我这里只是引入了 jul 的日志配置，下面的 logger 还是 slf4j 的。这样做是避免使用 jdk 自带的 logging.properties
    static {
        // 通过类加载器读取配置文件
        InputStream ins = Slf4jJulImplTest.class.getClassLoader().getResourceAsStream("logging.properties");
        // 创建 LogManager
        LogManager logManager = LogManager.getLogManager();

        // 通过 LogManager 加载配置文件
        try {
            logManager.readConfiguration(ins);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    static final Logger LOGGER = LoggerFactory.getLogger(Slf4jJulImplTest.class);

    public static void main( String[] args ) {
        LOGGER.trace("logback trace print");
        LOGGER.debug("logback debug print");
        LOGGER.info("logback info print");
        LOGGER.warn("logback warn print");
        LOGGER.error("logback error print");

        SubPackageTest.test();
    }
}
